package beans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;

import dao.DAOUsuario;


import modelos.Usuario;

@ManagedBean(name = "beanUsuario")
@SessionScoped
public class BeanUsuario implements Serializable {

	private Usuario admin = null;
	private List<Usuario> admins;
	private int id;
	private String nome;
	private String senha;
	private String email;
	private String senhaConfirm;
	private String message;
	private String idAlteracao;
	
//	public void preencheContato(ComponentSystemEvent evt) throws AbortProcessingException
//	{
//		
//	}
	
	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
	
	public void cancelar()
	{
		this.limpaCampos();
	}

	public List<Usuario> getUsuarios()
	{
		DAOUsuario daUsuario = null;
		
		try
		{
			admins = new ArrayList<Usuario>();
			
			daUsuario = new DAOUsuario();
			
			admins = daUsuario.buscaUsuarios();
		}
		catch (Exception err)
		{
			err.printStackTrace();
		}
		
		return admins;
	}
	
	public boolean validaCampos()
	{
		boolean bRet = false;
		
		if(nome.length()==0)
		{
			setMessage("Informe o nome do usuario");
		}
		else if(email.length()==0)
		{
			setMessage("Informe o email do usuario");
		}
		else if(senha.length()==0)
		{
			setMessage("Infomre a senha do usuario");
		}
		else 
		{
			bRet = true;
		}
		
		return bRet;
	}
	
	public void gravar()
	{
		DAOUsuario daUsuario = null;
		if(this.validaCampos())
		{
			try
			{
				daUsuario = new DAOUsuario();
				
				if(id != 0)
				{
					daUsuario.alteraUsuario(id, nome, email, senha);
				}
				else
				{
					daUsuario.insereUsuario(nome, email, senha);					
				}

			}
			catch(Exception err)
			{
				err.printStackTrace();
			}
			finally
			{
				this.limpaCampos();
			}
		}
	}
	
	public void limpaCampos()
	{
		nome = "";
		email ="";
		senha = "";
		senhaConfirm = "";
	}
	
	public void excluiUsuario()
	{
		DAOUsuario daUsuario = null;
		
		try
		{
			daUsuario = new DAOUsuario();
			
			daUsuario.excluiUsuario(id);
		}
		catch(Exception err)
		{
			err.printStackTrace();
		}
	}
	
	public List<Usuario> getAdmins() {
		
		return admins;
	}

	public void setAdmins(List<Usuario> admins) {
		this.admins = admins;
	}


	public Usuario getAdmin() {
		return admin;
	}

	public void setAdmin(Usuario admin) {
		this.admin = admin;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenhaConfirm() {
		return senhaConfirm;
	}

	public void setSenhaConfirm(String senhaConfirm) {
		this.senhaConfirm = senhaConfirm;
	}

	public String getIdAlteração() {
		return getIdAlteracao();
	}

	public void setIdAlteração(String idAlteração) {
		this.setIdAlteracao(idAlteração);
	}

	public String getIdAlteracao() {
		return idAlteracao;
	}

	public void setIdAlteracao(String idAlteracao) {
		this.idAlteracao = idAlteracao;
	}

	}
